#ifndef ACAPELLA_TRAITS_POD_H
#define ACAPELLA_TRAITS_POD_H

#include "traits_base.h"

#define REGISTER_POD_TYPE(T)                                        \
    namespace acapella{                                             \
        namespace traits{                                           \
            template<> struct is_pod<T>{typedef true_type type;};   \
        }                                                           \
    }                                                               \


namespace acapella
{
namespace traits
{

template<typename T>
struct is_pod{typedef false_type type;};

}
}

REGISTER_POD_TYPE(bool);
REGISTER_POD_TYPE(char);
REGISTER_POD_TYPE(unsigned char);
REGISTER_POD_TYPE(short);
REGISTER_POD_TYPE(unsigned short);
REGISTER_POD_TYPE(int);
REGISTER_POD_TYPE(unsigned int);
REGISTER_POD_TYPE(long);
REGISTER_POD_TYPE(unsigned long);
REGISTER_POD_TYPE(long long);
REGISTER_POD_TYPE(unsigned long long);
REGISTER_POD_TYPE(float);
REGISTER_POD_TYPE(double);





#endif
